package utils

import (
	"fmt"
	"io/ioutil"
	"os"
	"strconv"
	"strings"
	"time"
)

var (
	// regHref       = `((ht|f)tps?)://[w]{0,3}.baidu.com/link\?[a-zA-z=0-9-\s]*`
	regTitle      = `<title[\sa-zA-z="-]*>([^x00-xff]|[\sa-zA-Z=-：|，？"])*</title>`
	regCheckTitle = `(为什么|怎么)*.*([G|g][O|o][L|l][A|a][N|n][G|g]).*(怎么|实现|如何|为什么).*`
)

// Timer 计时器
func Timer() {
	t := time.NewTimer(time.Second * 1)

	// chan 接收数据
	<-t.C

	fmt.Print("\n\n\n执行爬抓\n\n")

	// 解析 url 内容
	f, _ := os.OpenFile("./data/url.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
	file, _ := ioutil.ReadAll(f)

	// 判断剩余任务
	if len(strings.Split(string(file), "\n")) < 1 {
		fmt.Println("crawler task is finished")
		os.Exit(0)
	}

	pageCont, _ := PageVisit(strings.Split(string(file), "\n")[0])

	// 结果写入
	res, _ := os.OpenFile("./data/data.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
	defer res.Close()

	if CheckRegexp(CheckRegexp(pageCont, regTitle, 0).(string), regCheckTitle, 0).(string) != "" {
		fmt.Println(CheckRegexp(CheckRegexp(pageCont, regTitle, 0).(string), regCheckTitle, 0).(string))
		fmt.Println("\n有效内容 => " + CheckRegexp(pageCont, regTitle, 0).(string))

		res.WriteString(CheckRegexp(pageCont, regTitle, 0).(string) + "\n")
	}

	fmt.Println(
		"\n待排重网址共：" +
			strconv.Itoa(len(strings.Split(string(file), "\n"))-1) +
			"个 => " +
			strings.Split(string(file), "\n")[0] + "\n")

	DelFirstText("./data/url.txt")
	Timer()
}
